package com.osdp.uc.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.osdp.uc.dto.UserDTO;
import com.osdp.uc.entity.UcUser;
import com.osdp.uc.vo.UcUserVo;

import java.util.List;

/**
 * 用户管理
 */
public interface IUcUserService extends IService<UcUser>{
    /**
     * 用户查询列表
     * @param user UcUserVo
     * @param page Page<UcUser>
     * @return IPage<UcUserVo>
     */
    IPage<UcUserVo> pageList(UcUserVo user, Page<UcUser> page);

    /**
     *
     * @param userVo UcUserVo
     * @return boolean
     */
    boolean insertUser(UcUserVo userVo);

    /**
     *
     * @param userVo UcUserVo
     * @return boolean
     */
    boolean updateUser(UcUserVo userVo);

    /**
     *
     * @param id
     * @param orgId
     * @return
     */
    UcUserVo getByUserId(String id, String orgId);

    /**
     *
     * @param id String
     * @param orgId String
     * @return boolean
     */
    boolean deleteUser(String id, String orgId);

    /**
     *
     * @param ids List<String>
     * @param orgId String
     * @return boolean
     */
    boolean deleteBatcah(List<String> ids,String orgId);

    /**
     * 根据部门ID查询用户分页列表
     * @param userVo UcUserVo
     * @param page Page<UcUser>
     * @return IPage<UcUserVo>
     */
    IPage<UcUserVo> pageListByOrgId(UcUserVo userVo, Page<UcUser> page);

    /**
     * 是否指定的用户名
     * @param id String
     * @param userName String
     * @return int 记录数
     */
    long queryIsExistUserName(String id, String userName);

    /**
     * 修改密码
     * @param id String
     * @param passWord String
     * @return boolean
     */
    boolean updatePassWord(String  id, String passWord);

    /**
     * 更新用户状态
     * @param ids String[]
     * @return status String "1"启用，“0” 停用
     */
    boolean updateValidation(String[] ids, String  status);

    //-----------------------------用于登录-------------------------------//
    /**
     * 根据用户名查询用户，用于用户登录
     * @param userName String
     * @return UserVo
     */
    UserDTO queryUserByUserName(String userName);

    /**
     * 用于用户登录，登录后放入缓存的登录用户信息
     * @param userId String
     * @return UserVo
     */
    UserDTO queryUserById(String userId);

    /**
     *
     * @param user
     * @param page
     * @return
     */
    IPage<UserDTO> userPageList(UserDTO user, Page<UcUser> page);

}
